<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>登录用户职位显示测试</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 800px;
            margin: 50px auto;
            padding: 20px;
        }
        .test-section {
            margin-bottom: 30px;
            padding: 20px;
            border: 1px solid #ddd;
            border-radius: 8px;
        }
        button {
            background-color: #007bff;
            color: white;
            padding: 10px 20px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            margin-right: 10px;
        }
        button:hover {
            background-color: #0056b3;
        }
        .result {
            margin-top: 15px;
            padding: 10px;
            border-radius: 4px;
            white-space: pre-wrap;
            background-color: #f8f9fa;
            border: 1px solid #dee2e6;
        }
        .success {
            background-color: #d4edda;
            border: 1px solid #c3e6cb;
            color: #155724;
        }
        .error {
            background-color: #f8d7da;
            border: 1px solid #f5c6cb;
            color: #721c24;
        }
        .info {
            background-color: #d1ecf1;
            border: 1px solid #bee5eb;
            color: #0c5460;
        }
    </style>
</head>
<body>
    <h1>登录用户职位显示测试</h1>
    
    <div class="test-section">
        <h2>1. 测试登录并查看用户数据</h2>
        <button onclick="testLoginAndUserData()">测试登录</button>
        <div id="login-result"></div>
    </div>
    
    <div class="test-section">
        <h2>2. 检查localStorage中的用户信息</h2>
        <button onclick="checkLocalStorage()">检查本地存储</button>
        <div id="storage-result"></div>
    </div>
    
    <div class="test-section">
        <h2>3. 模拟用户职位显示</h2>
        <button onclick="simulatePositionDisplay()">模拟职位显示</button>
        <div id="position-result"></div>
    </div>

    <script>
        async function testLoginAndUserData() {
            const resultDiv = document.getElementById('login-result');
            try {
                const response = await fetch('http://localhost:9090/api/auth/login', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({
                        username: 'admin',
                        password: 'admin123'
                    })
                });
                
                if (response.ok) {
                    const responseData = await response.json();
                    resultDiv.className = 'result success';
                    
                    let resultText = '✅ 登录成功!\n\n';
                    resultText += '完整响应数据:\n';
                    resultText += JSON.stringify(responseData, null, 2) + '\n\n';
                    
                    // 检查用户数据结构
                    if (responseData.data && responseData.data.user) {
                        const user = responseData.data.user;
                        resultText += '用户信息分析:\n';
                        resultText += `- ID: ${user.id || 'undefined'}\n`;
                        resultText += `- 用户名: ${user.username || 'undefined'}\n`;
                        resultText += `- 全名: ${user.fullName || 'undefined'}\n`;
                        resultText += `- 邮箱: ${user.email || 'undefined'}\n`;
                        resultText += `- 角色: ${user.role || 'undefined'}\n`;
                        resultText += `- 状态: ${user.status || 'undefined'}\n`;
                        resultText += `- 职位: ${user.position || 'undefined'}\n`;
                        
                        // 测试职位显示逻辑
                        const displayName = getUserDisplayName(user);
                        resultText += `\n职位显示逻辑:\n`;
                        resultText += `- 最终显示: "${displayName}"\n`;
                        
                        if (displayName) {
                            resultText += `- 状态: ✅ 有职位信息\n`;
                        } else {
                            resultText += `- 状态: ❌ 无职位信息\n`;
                        }
                    } else {
                        resultText += '\n❌ 错误: 响应数据中缺少用户信息!\n';
                    }
                    
                    resultDiv.textContent = resultText;
                } else {
                    resultDiv.className = 'result error';
                    resultText = '❌ 登录失败: ' + response.status + '\n';
                    const errorText = await response.text();
                    resultText += '错误详情: ' + errorText;
                    resultDiv.textContent = resultText;
                }
            } catch (error) {
                resultDiv.className = 'result error';
                resultDiv.textContent = '❌ 请求错误: ' + error.message;
            }
        }
        
        function checkLocalStorage() {
            const resultDiv = document.getElementById('storage-result');
            resultDiv.className = 'result';
            
            let resultText = 'LocalStorage 内容:\n\n';
            
            // 检查token
            const token = localStorage.getItem('token');
            resultText += `Token: ${token ? '存在' : '不存在'}\n`;
            if (token) {
                resultText += `Token值: ${token.substring(0, 20)}...\n`;
            }
            
            // 检查用户信息
            const userInfo = localStorage.getItem('user_info');
            resultText += `用户信息: ${userInfo ? '存在' : '不存在'}\n`;
            if (userInfo) {
                try {
                    const user = JSON.parse(userInfo);
                    resultText += `用户信息内容:\n`;
                    resultText += JSON.stringify(user, null, 2) + '\n\n';
                    
                    // 测试职位显示
                    const displayName = getUserDisplayName(user);
                    resultText += `职位显示测试:\n`;
                    resultText += `- 最终显示: "${displayName}"\n`;
                } catch (e) {
                    resultText += `解析错误: ${e.message}\n`;
                    resultText += `原始内容: ${userInfo}`;
                }
            }
            
            resultDiv.textContent = resultText;
        }
        
        function simulatePositionDisplay() {
            const resultDiv = document.getElementById('position-result');
            resultDiv.className = 'result info';
            
            let resultText = '用户职位显示逻辑说明:\n\n';
            
            resultText += '当前后端返回的用户数据:\n';
            resultText += '- fullName: "系统管理员"\n';
            resultText += '- position: 未提供\n';
            resultText += '- username: "admin"\n\n';
            
            resultText += '显示优先级:\n';
            resultText += '1. position (职位) - 最高优先级\n';
            resultText += '2. fullName (全名) - 第二优先级\n';
            resultText += '3. name (姓名) - 第三优先级\n';
            resultText += '4. username (用户名) - 第四优先级\n';
            resultText += '5. 空字符串 - 默认值\n\n';
            
            resultText += '预期结果:\n';
            resultText += '- 由于后端没有提供position字段\n';
            resultText += '- 会显示fullName: "系统管理员"\n';
            resultText += '- 页面正上方应该显示: "系统管理员"\n\n';
            
            resultText += '如果后端提供position字段:\n';
            resultText += '- 页面正上方会显示职位名称\n';
            resultText += '- 例如: "技术总监"、"项目经理"等\n';
            
            resultDiv.textContent = resultText;
        }
        
        // 模拟前端的用户显示名称逻辑
        function getUserDisplayName(user) {
            if (user?.position) {
                return user.position;
            }
            if (user?.fullName) {
                return user.fullName;
            }
            if (user?.name) {
                return user.name;
            }
            if (user?.username) {
                return user.username;
            }
            return '';
        }
    </script>
</body>
</html>
